<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        html {
            width: 3000px;
            height: 5000px;
        }

        .box {
            width: 200px;
            height: 200px;
            background-color: #6ff;
            margin-left: 1000px;
            margin-top: 1000px;
            overflow: hidden;
        }

        .sub {
            width: 100px;
            height: 100px;
            background-color: pink;
            margin: 50px;
        }
    </style>
</head>

<body>
    <div class="box">
        <!-- <div class="sub"></div> -->
    </div>
</body>
<script>
    // 事件对象  => 事件发生时的相关信息  (什么时间 发生了什么类型的事件 发生在谁身上  鼠标: 鼠标按下的按键 鼠标位置  键盘: 键盘按键的按键 对应的字符 等等)


    // 事件  => 事件发生并得到处理的过程
    // 1. 先绑定事件 -> 提前决定好事件触发时要执行的内容
    // 2. 浏览器监听到事件触发之后 -> 执行既定的函数 ->  传入一个事件对象 -> 携带着事件发生的信息

    // 如何获取事件对象? 
    // 常规浏览器: 绑定事件的函数中的第一参数获取 
    // IE低版本:  全局的event ->  window.event; (了解)

    // 事件对象的兼容:
    // var e = e ? e : window.event;
    // var e = e || window.event;


    // 事件对象的相关属性  语法: e.xxx
    // 通用: (每个事件都有)
    // timeStamp  从页面加载完毕到事件触发间隔的时间
    // type       事件类型 (click dblclick mousedown)
    // target     事件源(触发事件的元素)  (给父元素绑定事件,子(代)元素也可以触发 -> 为了区分哪个元素触发的事件 )
    // path       从事件源(触发事件的元素)开始,所有父代元素的集合

    // ctrlKey     事件触发时,ctrl键是否被按下 
    // altKey      事件触发时,alt键是否被按下 
    // shiftKey    事件触发时,shift键是否被按下 
    // metaKey     事件触发时,meta键是否被按下 

    // 一般用于做组合键(快捷键)  比如: ctrl + c


    // 鼠标事件相关的属性 
    // button   事件触发时按下的鼠标按键  (左:0 中:1 右:2 侧: 3 4)
    // buttons  (IE)事件触发时按下的鼠标按键    ( 左:1  右: 2 左右:3  中:4  左中:5  右中: 6  左中右: 7)


    // 相对于可视窗口的距离
    // clientX clientY   事件触发时,鼠标相对于可视窗口(左上角)的位置
    // x y               事件触发时,鼠标相对于可视窗口(左上角)的位置

    // 相对于页面的的距离
    // pageX   pageY     事件触发时,鼠标相对于文档(左上角)的位置

    // e.pageX 等价于 e.clientX + document.documentElement.scrollLeft
    // e.pageY 等价于 e.clientY + document.documentElement.scrollTop

    // offsetX offsetY  事件触发时,鼠标相对于事件源(触发事件的元素)的偏移



    var box = document.getElementsByClassName("box")[0];

    // 绑定事件 -> 赋值一个函数  -> 浏览器监听到事件触发之后 ->  执行既定的函数 ->  传入一个事件对象 -> 携带着事件发生的信息
    box.onmousedown = function (e) {  // 形参 e  evt  event  (常规浏览器)
        var e = e || window.event;
        console.log(e);

        // console.log(e.button);    //  左:0 中:1 右:2 侧: 3 4
        // console.log(e.buttons);   //  左:1  右: 2 左右:3  中:4  左中:5  右中: 6  左中右: 7

        // console.log(e.clientX, e.clientY);
        // console.log(e.pageX, e.pageY);

        console.log(e.target, e.offsetX, e.offsetY);
    }








</script>

</html>